package com.sojson.util.shutdown;

import com.sojson.util.SystemUtil;

import lombok.extern.slf4j.Slf4j;

/**
 * 自定义应用程序关闭后的操作方法Bean
 * 
 * @author liu
 * @date 2021-08-17
 */
@Slf4j
public abstract class CustomMethodShutdown {

    /**
     * 执行方法
     */
    public void start() {
        try {
            this.run();
        } catch (Throwable e) {
            log.error(e.getMessage(), e);
        } finally {
            SystemUtil.THREAD_SHUTDOWN_COUNT.countDown();
        }
    }

    /**
     * 方法实现
     * @throws Exception 
     */
    public abstract void run() throws Throwable;

}